home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / prog / pas_all.zip / TI443.ASC < prev    next >
Text File  |  1991-09-11  |  3KB  |  133 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.   PRODUCT  :  TURBO PASCAL EDITOR TOOLBOX            NUMBER  :  443
  9.   VERSION  :  4.0
  10.        OS  :  MS-DOS, PC-DOS
  11.      DATE  :  SEPTEMBER 20, 1988                       PAGE  :  1/2
  12.  
  13.     TITLE  :  MICROSTAR CRITICAL ERROR HANDLER CORRECTIONS
  14.  
  15.  
  16.  
  17.  
  18.   This handout addresses a problem reported by users  of  the Turbo
  19.   Pascal Editor Toolbox version 4.0.
  20.  
  21.   Users  have  found  that  MicroStar  cannot  recover  from a  DOS
  22.   Critical Error.  DOS Critical  Errors  occur  when  attempting to
  23.   write or read  a  disk  file  with  the disk door open, the drive
  24.   empty, or the printer  out  of paper, etc.  MicroStar reports the
  25.   Critical Error correctly.  However, the error will continue to be
  26.   reported even when the  error  condition  has been corrected (the
  27.   drive door closed, the printer loaded with paper, etc).  The only
  28.   solution is to quit MicroStar and lose any of the changes  to the
  29.   current file since the last correct save.
  30.  
  31.   The problem lies with the  Interrupt 24 Handler (the DOS Critical
  32.   Error Handler) implemented within MicroStar;  its  source  may be
  33.   found in the file INT24.ASM of the MicroStar source  code.    The
  34.   INT24.ASM correctly identifies Critical Errors but does not reset
  35.   the flag signaling a DOS Critical Error properly.    The solution
  36.   involves correcting one  line of INT24.ASM, reassembling IN24.ASM
  37.   to an object format  (INT24.OBJ),  and  recompiling  the complete
  38.   source for MicroStar.
  39.  
  40.      1.   Load INT24.ASM  into  an  ASCII  editor  (Turbo  Pascal's
  41.           editor will do).
  42.  
  43.      2.   Find Line 68 which should read as follows:
  44.  
  45.           MOV  CS:Int24ErrCode,0  ;Reset Int24ErrCode to 0
  46.  
  47.      3.   Replace this text with the following line.
  48.  
  49.           MOV  CS:Int24Err,0      ;Reset Int24Err to 0
  50.  
  51.      4.   Use the Microsoft or a compatible  assembler  to assemble
  52.           the code to an  object  format  (.OBJ). This must replace
  53.           the INT24.OBJ supplied with the distribution disks.
  54.  
  55.      5.   Set the compiler destination to disk (Compile/Destination
  56.           option). Load  MS.PAS into the editor and perform a build
  57.           (Compile/Build  option)  on  the entire application. Make
  58.           sure  the  entire   MicroStar  source  is  available  for
  59.           recompilation.
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.   PRODUCT  :  TURBO PASCAL EDITOR TOOLBOX            NUMBER  :  443
  75.   VERSION  :  4.0
  76.        OS  :  MS-DOS, PC-DOS
  77.      DATE  :  SEPTEMBER 20, 1988                       PAGE  :  2/2
  78.  
  79.     TITLE  :  MICROSTAR CRITICAL ERROR HANDLER CORRECTIONS
  80.  
  81.  
  82.  
  83.  
  84.   For  those  without  an  assembler,  the  following  Turbo Pascal
  85.   program corrects the unmodified MicroStar  EXE  file.    From the
  86.   directory containing MicroStar, enter the following lines of code
  87.   into the Turbo Pascal editor and run from either memory or disk.
  88.  
  89.   program ChMS;
  90.  
  91.   var
  92.     f : file of byte;
  93.     b : byte;
  94.  
  95.   begin
  96.  
  97.   Assign(f,'MS.EXE');
  98.   reset(f);
  99.  
  100.   seek( f, 129626);   b := 30;   write( f, b);
  101.   seek( f, 154257);   b := 101;  write( f, b);
  102.   seek( f, 154305);   b := 4;    write( f, b);
  103.   seek( f, 154401);   b := 103;  write( f, b);
  104.   seek( f, 154431);   b := 115;  write( f, b);
  105.   seek( f, 154701);   b := 108;  write( f, b);
  106.   seek( f, 154827);   b := 108;  write( f, b);
  107.  
  108.   close(f);
  109.  
  110.   end.
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.